//
//  FSTools.h
//  FSiOSClient
//
//  Created by purlible on 2024/8/23.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface FSTools : NSObject

#pragma mark -------------------------  基本类型判空  --------------------------
/*****************************************基本类型判空*****************************/
#pragma mark --- 判断字符串是否为空
+ (BOOL)isStrEmpty:(NSString*)str;
#pragma mark --- 判断字典是否为空
+(BOOL)isEmptyForDict:(NSDictionary*)dict;
#pragma mark --- 判断数组是否为空
+(BOOL)isEmptyForArray:(NSArray*)array;



#pragma mark --------------------------- 用户信息校验 --------------------------
/*****************************************用户信息校验*****************************/
#pragma mark --- 判断手机号码格式是否正确
+(BOOL)valiMobile:(NSString *)mobile;
#pragma mark --- 判断字符串是否是合法网址
+(BOOL)valiUrl:(NSString *)url;
#pragma mark --- 判断字符串是否是纯数字字符
+(BOOL)isPureNumberCharacters:(NSString *)string;



#pragma mark ------------------------------ 时间相关 ------------------------------
/*******************************************时间相关**********************************/

//时间戳
#pragma mark -   获取本地时间戳
+(NSString *)dateTime;
#pragma mark -  把服务器返回的时间yyyy-MM-dd HH:mm:ss 转为时间戳
+(NSString *)dateWithStringTotimestamp:(NSString *)timeStamp;
#pragma mark -  字符串将时间转换成时间戳转
+(NSString *)dateWithString:(NSString *)timeStamp;
#pragma mark -  将某个时间转化成 时间戳
+(NSInteger)timeSwitchTimestamp:(NSString *)formatTime andFormatter:(NSString *)format;
#pragma mark - 根据任意时间格式2016 - 4- 12 10:00 转化为时间戳
+(NSString *)dateAndTimeWithStringTotimestamp:(NSString *)timeStamp;
#pragma mark -  时间戳转为不同的格式
+(NSString *) dateToTime:(long long) timeStamp andforDate:(NSString  *) format;
#pragma mark -- 获取当前时间戳对应的年月日且为int类型 2017年5月1日
+ (NSString *)getNowTimeForYearMonthDay;
#pragma mark -  获取当前时间转化为不同的格式的时间
+(NSString *) getNow:(NSString *) format;
#pragma mark -- 根据时间戳获取月、日、时间
+ (NSString *)getMonthDayAndTimeFromTimeSp:(long long)timeSp;
//周几
#pragma mark -   把时间转为周几
+ (NSString*)weekdayStringFromDate:(NSString*)time;
#pragma mark -- 获取当前是周几
+(NSInteger)getNowWeekday;
#pragma mark -   把时间转为周几
+ (NSString*)getWeekdayStringFromDate:(NSString*)time;
#pragma mark --- 将0-6 转换成周日 到 周六
+ (NSString *)fromIntegerToWeekString:(NSInteger)integer;
#pragma mark --- 将周日 到 周六 转换成 0 - 6
+ (NSInteger )fromWeekStringToInteger:(NSString *)weekString;
//时间比较
#pragma mark -- 判断字符串是否大于当前时间
+(BOOL )isGreaterThanCurrentTimeWithTimeString:(NSString *)string;
#pragma mark -- 计算2个日期相差天数
+(NSInteger)daysFromDate:(NSDate *)startDate toDate:(NSDate *)endDate;
#pragma mark --获取未来某个日期是周几
//注意：featureDate 传递过来的格式 必须 和 formatter.dateFormat 一致，否则endDate可能为nil
+ (NSString *)featureWeekdayWithDate:(NSString *)featureDate;
#pragma mark -- 判断日期是否在本周 当天为今天 本周为8月28日 周一 其他为 7月26日
+ (NSString *)getDateStringFromDate:(NSDate *)date;
#pragma mark -- 获取动态时间(当天显示 今天 其余显示月日时间)
+ (NSString *)getDynamicDateStringFromTimeSp:(long long)timeSp;
#pragma mark -- 时间戳对应的年月日且为int类型 2017年5月1日 18:22 当天时间显示为今天
+ (NSString *)getDynamicDetailTimeFromTimeSp:(long long)timeSp;


#pragma mark - -------------------------- 数据格式校验 ---------------------------------
/*****************************************数据格式校验**********************************/

#pragma mark --- 检测输入表情
+ (BOOL)stringContainsEmoji:(NSString *)string;
#pragma mark --- 检测输入中文
+(BOOL)stringTextingChinese:(NSString*)string;
#pragma mark --- 检测输入数字
+(BOOL)stringTextingNumber:(NSString*)string;
#pragma mark --- 检测输入中文和表情
+(BOOL)stringTestingChineseandSymbol:(NSString*)string;
#pragma mark --- 检测输入6~12为数字和字母
+(BOOL)stringTextingSixUntilTwelve:(NSString*)string;
#pragma mark --- 检测输入0~12为数字和字母
+(BOOL)stringTextingZeroUntilTwelve:(NSString*)string;
#pragma mark --- 检测输入0~20位数字和字母
+(BOOL)stringTextingZeroUntilTwenty:(NSString*)string;
#pragma mark --- 检测输入0~12位数字
+(BOOL)stringTextingZeroUntilTwelveNumber:(NSString*)string;





#pragma mark -------------------------------- 数据格式转换 ---------------------------------
/*********************************************数据格式转换**********************************/
#pragma mark --- 判空后返回字符串
+(NSString *)judgeStr:(NSString *) str;
#pragma mark --- 截取字符串长度
+(NSString *) subStringWithLength:(NSString *)text strLength:(NSInteger)len;
#pragma mark --- 把毫秒秒转化为 3.02
+(NSString *)convertSecondToDataFormat:(NSString *) time;
#pragma mark --- 中文汉化
+ (NSString *)strUTF8Encoding:(NSString *)str;
#pragma mark --- 对象转JSONString
+ (NSString *)objectToJsonString:(id)object;
#pragma mark ---  字典转json字符串方法
// 去除空格和换行符
+ (NSString *)convertToJsonData:(id)object;






/*********************************************蓝牙数据 NSString 和 Data 转换**********************************/
#pragma mark -- 将 NSString 16 进制 字符串 转化为   NSData @"0a1234 0b23454" -->  <0a1234 0b23454>
+(NSData*)stringToByte:(NSString*)string;

#pragma mark --   将 16 进制 NSData 转化为 NSString 字符串  <0a1234 0b23454> --> @"0a1234 0b23454"
+(NSString*)coverFromHexDataToStr:(NSData*)hexData;




#pragma mark -- demo
//将16进制的字符串转换成NSData
+ (NSMutableData *)convertHexStrToData:(NSString *)str ;
//十六进制转换为普通字符串的。
+ (NSString *)ConvertHexStringToString:(NSString *)hexString;
//普通字符串转换为十六进制
+ (NSString *)ConvertStringToHexString:(NSString *)string;

//将NSData转为16进制的字符串
+ (NSString *)convertDataToHexStr:(NSData *)data;


/**
 十进制转换十六进制
 
 @param decimal 十进制数
 @return 十六进制数
 */
+ (NSString *)getHexByDecimal:(NSInteger)decimal;

//int转data
+(NSData *)ConvertIntToData:(int)i;
//data转int
+(int)ConvertDataToInt:(NSData *)data;
//十六进制转换为普通字符串的。
+ (NSData *)ConvertHexStringToData:(NSString *)hexString;


+ (void)copySandboxFile:(NSString *)filePath completion:(void(^)(BOOL success,NSString *destinationPath))completion;

///是否为中文
+ (BOOL)isCurrentLanguageSimplifiedChinese;

@end

NS_ASSUME_NONNULL_END
